﻿/*
 * Spheroids
 * 
 * initial implementation : 20.11.2008
 *
 * Copyright (c) Adam Sida, asida@centrum.cz.
 * All rights reserved.
 * 
 * for license see Petra.Gis.License.txt
 */
using System;
using System.Collections.Generic;


namespace Petra.Gis.ReferenceSystemServices
{
  public partial class Spheroid
  {
    //public static List<Spheroid> SearchEllipsoid;




    public static readonly Spheroid Airy1830 = new Spheroid("Airy 1830", 6377563.396, 6356256.91, false, DistanceUnit.Meter);
    public static readonly Spheroid Ats1977 = new Spheroid("ATS77", 6378135.0, 6356750.304922, false, DistanceUnit.Meter);
    public static readonly Spheroid AustralianNational1965 = new Spheroid("Australian National 1965", 6378160.0, 6356774.719, false, DistanceUnit.Meter);
    //public static readonly Spheroid Bessel1841 = new Spheroid("Bessel 1841", 6377397.15508, 6356078.96284, false, DistanceUnit.Meter);
    public static readonly Spheroid Bessel1841 = new Spheroid("Bessel 1841", 6377397.15508, 6356078.96290, false, DistanceUnit.Meter);
    public static readonly Spheroid Bessel1841Japan = new Spheroid("Bessel 1841 (Japan)", 6377397.15508, 6356078.963, false, DistanceUnit.Meter);
    public static readonly Spheroid Bessel1841Namibia = new Spheroid("Bessel 1841 (Namibia)", 6377483.865, 6356165.382966, false, DistanceUnit.Meter);
    public static readonly Spheroid Clarke1866 = new Spheroid("Clarke 1866", 6378206.4, 6356583.8, false, DistanceUnit.Meter);
    public static readonly Spheroid Clarke1880 = new Spheroid("Clarke 1880", 6378249.145, 6356514.86955, false, DistanceUnit.Meter);
    public static readonly Spheroid Everest = new Spheroid("Everest", 6377298.556, 6356097.550301, false, DistanceUnit.Meter);
    public static readonly Spheroid Everest1948 = new Spheroid("Everest 1948", 6377304.063, 6356103.039, false, DistanceUnit.Meter);
    public static readonly Spheroid Everest1956 = new Spheroid("Everest 1956", 6377301.243, 6356100.228368, false, DistanceUnit.Meter);
    public static readonly Spheroid Everest1969 = new Spheroid("Everest 1969", 6377295.664, 6356094.667915, false, DistanceUnit.Meter);
    public static readonly Spheroid EverestIndia1830 = new Spheroid("Everest (India 1830)", 6377276.3452, 6356075.4133, false, DistanceUnit.Meter);
    public static readonly Spheroid EverestPakistan = new Spheroid("Everest (Pakistan)", 6377309.613, 6356108.570542, false, DistanceUnit.Meter);
    public static readonly Spheroid Fischer1960 = new Spheroid("Fisher 1960", 6378166.0, 6356784.283666, false, DistanceUnit.Meter);
    public static readonly Spheroid Fischer1968 = new Spheroid("Fisher 1968", 6378150.0, 6356768.337303, false, DistanceUnit.Meter);
    public static readonly Spheroid Grs80 = new Spheroid("GRS 1980", 6378137.0, 6356752.31414, false, DistanceUnit.Meter);
    public static readonly Spheroid Helmert1906 = new Spheroid("Helmert 1906", 6378200.0, 6356818.169628, false, DistanceUnit.Meter);
    public static readonly Spheroid Hough1960 = new Spheroid("Hough 1960", 6378270.0, 6356794.343479, false, DistanceUnit.Meter);
    public static readonly Spheroid Indonesian1974 = new Spheroid("Indonesian 1974", 6378160.0, 6356774.504086, false, DistanceUnit.Meter);
    public static readonly Spheroid International1924 = new Spheroid("International 1924", 6378388.0, 6356911.94613, false, DistanceUnit.Meter);
    public static readonly Spheroid Krassovsky1940 = new Spheroid("Krassovsky 1940", 6378245.0, 6356863.0188, false, DistanceUnit.Meter);
    public static readonly Spheroid ModifiedAiry = new Spheroid("Modified Airy", 6377340.189, 6356034.448, false, DistanceUnit.Meter);
    public static readonly Spheroid ModifiedFischer1960 = new Spheroid("Modified Fisher 1960", 6378155.0, 6356773.3205, false, DistanceUnit.Meter);
    public static readonly Spheroid NewInternational1967 = new Spheroid("New International 1967", 6378157.5, 6356772.2, false, DistanceUnit.Meter);
    public static readonly Spheroid NormalSphere = new Spheroid("Normal Sphere", 6370997.0, 6370997.0, false, DistanceUnit.Meter);
    public static readonly Spheroid Sgs1985 = new Spheroid("SGS 85", 6378136.0, 6356751.301569, false, DistanceUnit.Meter);
    public static readonly Spheroid SouthAmerican1969 = new Spheroid("South American 1969", 6378160.0, 6356774.719, false, DistanceUnit.Meter);
    public static readonly Spheroid Wgs1960 = new Spheroid("WGS 60", 6378165.0, 6356783.286959, false, DistanceUnit.Meter);
    public static readonly Spheroid Wgs1966 = new Spheroid("WGS 1966", 6378145.0, 6356759.769356, false, DistanceUnit.Meter);
    public static readonly Spheroid Wgs1972 = new Spheroid("WGS 1972", 6378135.0, 6356750.519915, false, DistanceUnit.Meter);
    public static readonly Spheroid Wgs1984 = new Spheroid("WGS 1984", 6378137.0, 6356752.314245, false, DistanceUnit.Meter);





    #region Predefined ellipsoids
    /// <summary>
    /// WGS 84 ellipsoid
    /// </summary>
    /// <remarks>
    /// Inverse flattening derived from four defining parameters 
    /// (semi-major axis;
    /// C20 = -484.16685*10e-6;
    /// earth's angular velocity w = 7292115e11 rad/sec;
    /// gravitational constant GM = 3986005e8 m*m*m/s/s).
    /// </remarks>


    /// <summary>
    /// WGS 72 Ellipsoid
    /// </summary>


    /// <summary>
    /// GRS 1980 / International 1979 ellipsoid
    /// </summary>
    /// <remarks>
    /// Adopted by IUGG 1979 Canberra.
    /// Inverse flattening is derived from
    /// geocentric gravitational constant GM = 3986005e8 m*m*m/s/s;
    /// dynamic form factor J2 = 108263e8 and Earth's angular velocity = 7292115e-11 rad/s.")
    /// </remarks>


    /// <summary>
    /// International 1924 / Hayford 1909 ellipsoid
    /// </summary>
    /// <remarks>
    /// Described as a=6378388 m. and b=6356909m. from which 1/f derived to be 296.95926. 
    /// The figure was adopted as the International ellipsoid in 1924 but with 1/f taken as
    /// 297 exactly from which b is derived as 6356911.946m.
    /// </remarks>


    /// <summary>
    /// Clarke 1880
    /// </summary>
    /// <remarks>
    /// Clarke gave a and b and also 1/f=293.465 (to 3 decimal places).  1/f derived from a and b = 293.4663077
    /// </remarks>


    /// <summary>
    /// Clarke 1866
    /// </summary>
    /// <remarks>
    /// Original definition a=20926062 and b=20855121 (British) feet. Uses Clarke's 1865 inch-metre ratio of 39.370432 to obtain metres. (Metric value then converted to US survey feet for use in the United States using 39.37 exactly giving a=20925832.16 ft US).
    /// </remarks>


    /// <summary>
    /// Sphere
    /// </summary>
    /// <remarks>
    /// Authalic sphere derived from GRS 1980 ellipsoid (code 7019).  (An authalic sphere is
    /// one with a surface area equal to the surface area of the ellipsoid). 1/f is infinite.
    /// </remarks>

    #endregion
  }
}
